const db = wx.cloud.database()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    times:0,
    currentImageIndex:'1'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let productInfo = JSON.parse(options.productInfo)
    this.setData({
      productInfo,
    })
  },

  //设置当前图片下标
  setCurrentImageIndex(e){
    this.setData({
      currentImageIndex:e.detail.currentItemId
    })
  },

  //联系商家
  call(){
    wx.makePhoneCall({
      phoneNumber: this.data.productInfo.phoneNumber,
    })
  },

  //将商品添加至购物车
  addToShoppingCart(){
    wx.showLoading({
      title: '添加中...',
      mask:true,
    })
    let account = wx.getStorageSync('userInfo').account
    let productInfo = {...this.data.productInfo,...{quantity:1}}
    let productId = productInfo._id
    db.collection('shoppingCart').where({
      account,
    }).get().then(res=>{
      if(res.data.length == 0){
        //说明购物车不存在，新建购物车
        this.newShoppingCart(account)
      }else{
        //说明购物车存在，然后更新购物车
        let {_id,products} = res.data[0]
        this.updateShoppingCart(_id,productId,productInfo,products)
      }
    }).catch(error=>{
      console.log(error)
    })
  },

  //新建购物车
  newShoppingCart(account){
    db.collection('shoppingCart').add({
      data:{
        account,
        products:[]
      }
    }).then(()=>{
      let {times} = this.data
      if(times == 0){
        this.addToShoppingCart()
        this.setData({
          times:times++
        })
      }
    }).catch(error=>{
      console.log(error)
    })
  },

  /**
   * 更新购物车
   * @param {*} id :用户购物车id
   * @param {*} productId ：待添加至购物车的商品id
   * @param {*} products ：用户购物车中已有的商品列表
   */
  updateShoppingCart(id,productId,productInfo,products){
    //判断待添加的商品是否购物车中已有，已有的话，quantity+1；否则将商品添加
    let filProduct = products.filter((p)=>{
      return p._id.indexOf(productId) != -1
    })

    if(filProduct.length !=0){
      //说明待添加商品在购物车中已有,quantity+1
      //与filProduct.quantity++效果相同
      for(let item of products){
        if(item._id == productId){
          item.quantity++
        }
      }

      db.collection('shoppingCart').doc(id).update({
        data:{
          products,
        }
      }).then(()=>{
        wx.hideLoading()
        wx.showToast({
          title: '添加成功，亲~',
          icon:'success'
        })
      }).catch(error=>{
        console.error(error)
      })
    }else{
      db.collection('shoppingCart').doc(id).update({
        data:{
          products:_.unshift(productInfo)
        }
      }).then(()=>{
        wx.hideLoading()
        wx.showToast({
          title: '添加成功，亲~',
          icon:'success'
        })
      }).catch(error=>{
        console.log(error)
      })
    }
  },

})